import http, {ApiResponse} from "../../../../lang/http";

interface User {
    // ID
    id: string;
    // 机构号
    orgId: string;
    // 用户部门
    deptId: string;
    // 部门
    deptName: string;
    // 账户
    account: string;
    // 工号
    no: string;
    // 座右铭
    motto: string;
    // 用户状态
    status: string;
    // 性别
    gender: string;
    // 用户头像
    portrait: string;
    // 用户名称
    username: string;
    // 电话号码
    phone: string;
    // 邮箱
    email: string;
    // 密码
    password: string;
    // 密码盐值
    passwordSalt: string;
    // 是否可用
    disabled: boolean;
    // 短期锁定
    lock: boolean;
    // 创建日期
    gmtCreate: string;
    // 修改日期
    gmtModified: string;
}

const formModel = (): User => {
    return {
        //ID
        id: ''
        //机构号
        , orgId: ''
        //用户部门
        , deptId: ''
        //部门
        , deptName: ''
        //账户
        , account: ''
        //工号
        , no: ''
        //座右铭
        , motto: ''
        //用户状态
        , status: ''
        //性别
        , gender: ''
        //用户头像
        , portrait: ''
        //用户名称
        , username: ''
        //电话号码
        , phone: ''
        //邮箱
        , email: ''
        //密码
        , password: ''
        //密码盐值
        , passwordSalt: ''
        //是否可用
        , disabled: ''
        //短期锁定
        , lock: ''
        //创建日期
        , gmtCreate: ''
        //修改日期
        , gmtModified: ''
    }
}

const formRules = {
    id: [
        {required: true, message: "[ID]字段不允许为空"},
        {min: 0, max: 32, message: "[ID]最多32字符"}
    ],
    orgId: [
        {min: 0, max: 32, message: "[机构号]最多32字符"}
    ],
    deptId: [
        {min: 0, max: 32, message: "[用户部门]最多32字符"}
    ],
    deptName: [
        {min: 0, max: 32, message: "[部门]最多32字符"}
    ],
    account: [
        {required: true, message: "[账户]字段不允许为空"},
        {min: 0, max: 32, message: "[账户]最多32字符"}
    ],
    no: [
        {min: 0, max: 32, message: "[工号]最多16字符"}
    ],
    motto: [
        {min: 0, max: 32, message: "[座右铭]最多128字符"}
    ],
    portrait: [
        {min: 0, max: 32, message: "[用户头像]最多128字符"}
    ],
    username: [
        {min: 0, max: 32, message: "[用户名称]最多64字符"}
    ],
    phone: [
        {min: 0, max: 32, message: "[电话号码]最多16字符"}
    ],
    email: [
        {min: 0, max: 32, message: "[邮箱]最多128字符"}
    ],
    password: [
        {min: 0, max: 32, message: "[密码]最多32字符"}
    ],
    passwordSalt: [
        {min: 0, max: 32, message: "[密码盐值]最多32字符"}
    ],
}




/**
 * 数据新增
 *
 * @param params 对象实体
 * @returns 请求Promise
 */
const create = (params: User): Promise<ApiResponse> => {
    return http.ajax({
        url: '/sys/user/info',
        method: 'POST',
        params
    });
}

/**
 * 根据 ID 删除
 *
 * @param id 数据 ID
 * @returns 请求Promise
 */
const remove = (id: string | number): Promise<ApiResponse> => {
    return http.ajax({
        method: "DELETE",
        url: 'sys/user/info',
        params: {id}
    });
}

/**
 * 数据修改
 *
 * @param params 对象实体
 * @returns 请求Promise
 */
const modify = (params: User): Promise<ApiResponse> => {
    return http.ajax({
        method: "PUT",
        url: 'sys/user/info',
        params: params
    });
}

/**
 * 数据列表查询
 *
 * @param params 查询参数
 * @returns 分页数据Promise
 */
const list = (params: object): Promise<User[]> => {
    return http.ajax({
        url: '/sys/user/list',
        method: 'GET',
        params
    });
}


/**
 * 数据列表查询
 *
 * @param params 查询参数
 * @returns 分页数据Promise
 */
const page = (params: object): Promise<User[]> => {
    return http.ajax({
        url: '/sys/user/page',
        method: 'GET',
        params
    });
}

export default {create, remove, modify, list, page,  formModel, formRules}
